{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第一题 创建DataFrame\n",
    "将字典data ={ \"grammer\":[\"Python\",\"C\",\"Java\",\"Go\",np.nan,\"SQL\",\"PHP\",\"Python\"],\n",
    "          \"score\":[1,2,np.nan,4,5,6,7,10]} 创建为DataFrame             "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  score\n",
       "0  Python    1.0\n",
       "1       C    2.0\n",
       "2    Java    NaN\n",
       "3      Go    4.0\n",
       "4     NaN    5.0\n",
       "5     SQL    6.0\n",
       "6     PHP    7.0\n",
       "7  Python   10.0"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "data ={ \"grammer\":[\"Python\",\"C\",\"Java\",\"Go\",np.nan,\"SQL\",\"PHP\",\"Python\"],\n",
    "          \"score\":[1,2,np.nan,4,5,6,7,10]}\n",
    "df = pd.DataFrame(data)   #df = pd.DataFrame(data) \n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 假如是直接创建："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  score\n",
       "0  Python    1.0\n",
       "1       C    2.0\n",
       "2    Java    NaN\n",
       "3      Go    4.0\n",
       "4     NaN    5.0\n",
       "5     SQL    6.0\n",
       "6     PHP    7.0\n",
       "7  Python   10.0"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame({\n",
    "    \"grammer\":[\"Python\",\"C\",\"Java\",\"Go\",np.nan,\"SQL\",\"PHP\",\"Python\"],\n",
    "    \"score\":[1,2,np.nan,4,5,6,7,10]})\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第二题 提取含有字符串“Python”的行    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 解法一"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  score\n",
       "0  Python    1.0\n",
       "7  Python   10.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['grammer'] == 'Python']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 解法二"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  score\n",
       "0  Python    1.0\n",
       "7  Python   10.0"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = df['grammer'].str.contains(\"Python\")\n",
    "results.fillna(value = False, inplace = True)   #pandas中fillna()方法，能够使用指定的方法填充NA/NaN值。\n",
    "df[results]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第三题 提取列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['grammer', 'popularity'], dtype='object')"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四题 修改列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "0  Python         1.0\n",
       "1       C         2.0\n",
       "2    Java         NaN\n",
       "3      Go         4.0\n",
       "4     NaN         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.rename(columns = {'score':'popularity'},inplace = True)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第五题 字符统计 统计grammer列中每种编程语言出现的次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Python    2\n",
       "Java      1\n",
       "PHP       1\n",
       "Go        1\n",
       "C         1\n",
       "SQL       1\n",
       "Name: grammer, dtype: int64"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['grammer'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第六题 缺失值处理  将空值用上下值的平均值填充"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### pandas 里有一个插值方法，interpolate()插值法，计算的是缺失值前一个值和后一个值的平均数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "0  Python         1.0\n",
       "1       C         2.0\n",
       "2    Java         3.0\n",
       "3      Go         4.0\n",
       "4     NaN         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['popularity'] = df['popularity'].fillna(df['popularity'].interpolate())\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第七题 数据提取  提取popularity 列中值大于3的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "3      Go         4.0\n",
       "4     NaN         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['popularity'] > 3]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第八题 数据去重  按照grammer 列进行去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Python</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "0  Python         1.0\n",
       "1       C         2.0\n",
       "2    Java         3.0\n",
       "3      Go         4.0\n",
       "4     NaN         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop_duplicates(['grammer'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 注：\n",
    "#drop_duplicates(subset=None, keep='first', inplace=False)；\n",
    "#subset是用来指定特定的列，默认为所有列\n",
    "#当keep='first'时，就是保留第一次出现的重复行，其余删除\n",
    "#当keep='last'时，就是保留最后一次出现的重复行，其余删除\n",
    "#当keep=False时，就是删除所有重复行\n",
    "#inplace是指是否直接在原数据上进行修改，默认为否。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Java</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>PHP</td>\n",
       "      <td>7.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Python</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "1       C         2.0\n",
       "2    Java         3.0\n",
       "3      Go         4.0\n",
       "4     NaN         5.0\n",
       "5     SQL         6.0\n",
       "6     PHP         7.0\n",
       "7  Python        10.0"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop_duplicates(['grammer'],keep = 'last')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第九题 数据计算  计算popularity 列平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.75"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['popularity'].mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十题 格式转化 将grammer 列 转换为 list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Python', 'C', 'Java', 'Go', nan, 'SQL', 'PHP', 'Python']"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['grammer'].to_list()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十一题 数据保存 将DataFrame 保存为EXCEL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_excel('filename.xlsx')"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十二题 数据查看"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(8, 2)"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "shape函数是numpy.core.fromnumeric中的函数，它的功能是查看矩阵或者数组的维数。\n",
    "#df.ndim  #维度\n",
    "#df.shape   #行数，列数\n",
    "#df.size    #元素的个数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "16"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十三题 数据提取 提取popularity列值大于3小于7的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>grammer</th>\n",
       "      <th>popularity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Go</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SQL</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  grammer  popularity\n",
       "3      Go         4.0\n",
       "4     NaN         5.0\n",
       "5     SQL         6.0"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[(df['popularity'] > 3) & (df['popularity'] < 7)] "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十四题  位置处理  交换两列的位置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         3.0    Java\n",
       "3         4.0      Go\n",
       "4         5.0     NaN\n",
       "5         6.0     SQL\n",
       "6         7.0     PHP\n",
       "7        10.0  Python"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp = df['popularity']\n",
    "df.drop(labels = ['popularity'],axis = 1,inplace = True)\n",
    "df.insert(0,'popularity',temp)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 小结：\n",
    "df.drop([\"列名\"]，axis=1) 删除列名为\"xxx\"的整列\n",
    "#当你要删除某一行或者某一列时，用drop函数，它不改变原有的df中的数据，而是返回另一个dataframe来存放删除后的数据。\n",
    "#默认参数axis=0，表示对行进行操作，如需对列进行操作需要更改默认参数为axis=1，\n",
    "#默认参数inplace=False，表示该删除操作不改变原数据，而是返回一个执行删除操作后的新dataframe，如需直接在原数据上进行删除操作，需要更改默认参数为inplace=True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "2         3.0    Java\n",
       "3         4.0      Go\n",
       "4         5.0     NaN\n",
       "5         6.0     SQL\n",
       "6         7.0     PHP\n",
       "7        10.0  Python"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop([0,1])    #删除索引为0、1的整行"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十五题  数据提取 提取popularity 列最大值所在行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "7        10.0  Python"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df['popularity'] == df['popularity'].max()]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十六题 数据查看 查看最后五行数据或者前五行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   popularity grammer\n",
      "3         4.0      Go\n",
      "4         5.0     NaN\n",
      "5         6.0     SQL\n",
      "6         7.0     PHP\n",
      "7        10.0  Python\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         3.0    Java\n",
       "3         4.0      Go\n",
       "4         5.0     NaN"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail()\n",
    "print(df.tail())\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十七题 数据修改  删除最后一行数据\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         3.0    Java\n",
       "3         4.0      Go\n",
       "4         5.0     NaN\n",
       "5         6.0     SQL\n",
       "6         7.0     PHP"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df17 = df.drop(labels = df.shape[0]-1)\n",
    "df17"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十八题 数据修改  添加一行数据 ['Perl',6.6]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6.6</td>\n",
       "      <td>Perl</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         3.0    Java\n",
       "3         4.0      Go\n",
       "4         5.0     NaN\n",
       "5         6.0     SQL\n",
       "6         7.0     PHP\n",
       "7        10.0  Python\n",
       "8         6.6    Perl"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row = {'grammer':'Perl','popularity':6.6}\n",
    "df = df.append(row,ignore_index = True)  #参数ignore_index=True，新加的索引会重新排列，不设置为True则不会重新排列。\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第十九题 数据整理  对数据按照popularity 列值的大小进行排序\n",
    "### 如果是降序排列：\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6.6</td>\n",
       "      <td>Perl</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "7        10.0  Python\n",
       "6         7.0     PHP\n",
       "8         6.6    Perl\n",
       "5         6.0     SQL\n",
       "4         5.0     NaN\n",
       "3         4.0      Go\n",
       "2         3.0    Java\n",
       "1         2.0       C\n",
       "0         1.0  Python"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(\"popularity\",ascending = False,inplace = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 如果是升序排列\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>popularity</th>\n",
       "      <th>grammer</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>Java</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>Go</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>SQL</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6.6</td>\n",
       "      <td>Perl</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>PHP</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>10.0</td>\n",
       "      <td>Python</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   popularity grammer\n",
       "0         1.0  Python\n",
       "1         2.0       C\n",
       "2         3.0    Java\n",
       "3         4.0      Go\n",
       "4         5.0     NaN\n",
       "5         6.0     SQL\n",
       "8         6.6    Perl\n",
       "6         7.0     PHP\n",
       "7        10.0  Python"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(\"popularity\",inplace = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### sort_values()函数的具体参数\n",
    "用法： DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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BEiABCaTAIWwyaTLvEmABEiABEiABEiABEiABEiABEiABEiABKYNAQph06YrWBESIAESIAESIAESIAESIAESIAESIAESIIHJJEAhbDLpMm8SIAESIAESIAESIAESIAESIAESIAESIIFpQ4BC2LTpClaEBEiABEiABEiABEiABEiABEiABEiABEhgMglQCJtMusybBEiABEiABEiABEiABEiABEiABEiABEhg2hCgEDZtuoIVIQESIAESIAESIAESIAESIAESIAESIAESmEwCFMImky7zJgESIAESIAESIAESIAESIAESIAESIAESmDYEKIRNm65gRUiABEiABEiABEiABEiABEiABEiABEiABCaTAIWwyaTLvEmABEiABEiABEiABEiABEiABEiABEiABKYNAQph06YrWBESIAESIAESIAESIAESIAESIAESIAESIIHJJEAhbDLpMm8SIAESIAESIAESIAESIAESIAESIAESIIFpQ4BC2LTpClaEBEiABEiABEiABEiABEiABEiABEiABEhgMglQCJtMusybBEiABEiABEiABEiABEiABEiABEiABEhg2hD4QiI1+fjjjxOJzrhJQoD9niQdyWaQAAmQAAmQAAmQAAmQAAmQAAmQwAwnkJAQNn/+/BmOa+Y1/+LFi2C/z7x+Z4tJgARIgARIgARIgARIgARIgARI4FYlILQMrz9OjfQiw3ASIAESIAESIAESIAESIAESIAESIAESIIGkIkAhLKm6k40hARIgARIgARIgARIgARIgARIgARIgARLwIkAhzIsMw0mABEiABEiABEiABEiABEiABEiABEiABJKKAIWwpOpONoYESIAESIAESIAESIAESIAESIAESIAESMCLAIUwLzIMJwESIAESIAESIAESIAESIAESIAESIAESSCoCFMKSqjvZGBIgARIgARIgARIgARIgARIgARIgARIgAS8CFMK8yDCcBEiABEiABEiABEiABEiABEiABEiABEggqQhQCEuq7mRjSIAESIAESIAESIAESIAESIAESIAESIAEvAhQCPMiw3ASIAESIAESIAESIAESIAESIAESIAESIIGkIkAhLKm6k40hARIgARIgARIgARIgARIgARIgARIgARLwIkAhzIsMw0mABEiABEiABEiABEiABEiABEiABEiABJKKAIWwpOpONoYESIAESIAESIAESIAESIAESIAESIAESMCLAIUwLzIMJwESIAESIAESIAESIAESIAESIAESIAESSCoCFMKSqjvZGBIgARIggWQlMPJaJYoruzHi0cC+vcWofM3rqJGoD63FxWjtNfYBka54b58VMNatcDcqi1sxATl51sCdwQi6K4s92cj2xV2vSD5WZaIdM2LpdZkInkaWHr9j7TfJMN76yT6tRHfYWQmtneb51tuK4rgZO/Ny24+HtVu6iQqLXr5gqF5DkaVGT2/EF30YkY9k6cbcSMXfCSXgeY7HKkX0cfz95Hm92q4dx3UVqwpxHHe/Z8aRkFFIgARIIMkJfCHJ28fmkQAJkAAJkMDYCYhBUrAVA/HmkBNES30R0vX4YvBTfSTexJHximo6EVwSGe4Wkn53Dgb2NaB7WT2K0txijC1MDKTK9g0gvrp0o7oYqO0MYrFncWIAWY1uz+PGgaIY+ejxeg+jdSAHwVaLu5ED0IfTR4Cczeu86yMGoi9l2vrNSC/6r+3uFtQ/mg6Eh/AhilAarT+MumxXWi/yr4nW2hjtdJ6D+jlm1DHh34wFyNlXjUqjXQlnEH8C49yJlSJns844VsRxHY9x3jmuXa0okaYNma2R11R3TaVrePxVHEH63UXorikGErjO48//Fo3pPN/VZhh95Bkn+rXkvB/Le9pdagEJbIfTkVk4gNZgKzKj3u8SyNMzaoxz10wXvf1mNG6QAAmQAAmAQtiknQTiq04ZWufVonOLeCHWH2KFxv6kFcyMSYAESIAEJpSAEFkiB8LOIuSg/4Q9dPGWTnRusYeZe7pAMlEiQPqjpSjaV43j742gSAg3Y/5zDrrE4KpeF5Kcx9wKEWKYh/CjPwODnZ0IGkklBw/xLNoxx2C4NViMVj1Pg+nIa22a4LavDMX7jAKNSJpoibvWoWVlA8r2Zip9ZT3DW5Zp8UfeO46BnFWmyOnITe72ne4GCmtdhEiPAarePr0E7b0hQnUVaTsjhLyotn8ONm51hRsTPWJ8oqdrrrbA9Efr0fmoEaQxPb7STfTSLGHcjxnpJ+LXupZtIqfoh5fc8l+MdZvbUBasBJR7gGhX7eViVI9LBElH+qNBdGYAxWMRw+LpY9kkj3PPrbnTJszqJ6NKkfdXRxz1WpLbkfcgcV/o7HTcGyOsHY0StV+neGY/Kvai3O8M4S4yUYIhizEh98wES2V0EiABEkhmAhTCkrl32TYSIAESIIEJICC++lsiS9QMc1ZFPWweNAZqhbWatZF5IP4NzwFahMARx0D4SDWKTcs1McDsRKdqVaYPMms7l8sKjkUokfV1aZ4hHik2VC6xvIIcg2HoYouM3ofDHpZssi4faXmmp6UDQrDR0+ihKKrvRJG2A2AEZ08MAAMDKCs25DbjoM433I22I2Jba4lWRhAtTxnxYv2mO8rUpq1WY3mECBYrJ+P4WPpJphUiS7FlCTkgzv+cIGpXHkf1Pkupy1lplCR+HYKA88Nf+CyOD+Rg1XaHEKFmMQXbx/cUY+ipTmhnsna+DM2zetpZBSF6taASZYf6UCQ/bGoxFm+pRdGRalTvXa5/8HSmjHN/SRAtmz9Ew/AIsCQBNrdn4g8fLcICs5gR9L12FkOZeSj6AzWfe3GnGWeGbCwJorPTlNoBKRoex6plKpcEWIxD0BL3gTLz3qrdZ4tqaoEa1SrWfv4N2O7hznscML57ZgLtZlQSIAESSGICFMKmrHMdX3OmrFwWRAIkQAIkMD4CkQMRt/wiLRbcYgG26WJHTqPviSG0BVuxwGN6lBRUzIGULsQU1qJWZO8UG5xFGlYSTuuRmmLNUirOfEaGPwRiWEM5i45rX4pHQFHN2GSwaGVIazAxgI02ldGw1nZmZPAR4YLxE0M4PmAXFLX+XqVPqRxB955WYHOLaTknpmQW1Yjpmk7hzFnYZO/HY8Vn1EFvY1oR6juLLAHBtIYq0i28VMHRkdbYdfz2HWrFQE4Q21SB1RFnKnZXrSxC60vdyJwH4PJpHEcQ25YPoVsXRt3qIC3bIg4sRrCmCB+eFjIpoloKRiR1BIj86/Uwea1hATJjcfqSsFZTr5s+tAoh7L51CNrCHYVxd8wEbPfuGLkYVqmGVbC8j0OZFWJYxRr3aCU/I60SZG1O4j3TKoRbJEACJJD8BKaVEDb6r2/i+R+/jHcGRjB6HcDtczB/2ZPYuqUI81P1zhi9iO69zXj5vYu4+ikwa858LP/vW1FWOB+pt1kddvX9NjQf6Mb5X43i+qxUZP5BETZuKUXel/U4n43i4pEWNHScxtB/XcesL2ViUeFGbC3Jwxw9H+2BtwBV+/PQ91wzXj9/VcvrgVJsU+sE4Or7z+N/Nr2OvqvXMStzJbbuLLUqI7ecUyO1/Q83N6AMnVY95izGH5X/GTbeP8dKP3oRb/64Bc//YgCj12ch86EN2LYOaPlz74GTlZhbJEACJEAC04OAJh60DgifVS2ozziM4hoAQnRoBSqDxSh2sTwwBlJ24UVYCymt0i3MPC2ADGFDF35Un0Qjr+UAJ4YwgsUeg3nNGipn5TakI11O0VFKjntTtsMRW043BDCgCk8ijgsHR9IYu2d1a7B6jzYZydWPVFb/ODn27a3GAHIwFAYW6wLFyOUBYF6pzH/ktQa0CqGsXrM4sYlwcmECh7WUUbz8tVuD2A5NyI7aRpcMFZG0qCaabzeXtHEHab7agNYIizon67izHGvEZUEp5vXtbQXuXof6LelAryZWnhXO603RGYDtvHQRxJcEUR9VaPWopMLcPcaA9/RikSCWAO7I1Hif3VaTgoO7D2MIc/Dw95rx5H/UomzfgghffEZ8m6+/8Fk836S/C2MW5ixaidLvbsTDXzNe0B2FjmvXwwo3XovbcZXtnVgKouZU38h45kcLIfiOa3p6ZN5GyOTdM40S+EsCJEACM4PA9BHCfvUyKv+8DeGvPYwN5UGk334VF3/RjZffbsWO0S+ipXol5ogpD7Xb0Pq/F2PdM9vky+jI6U4c2LcNF683o/nxTNlr4gFeLkz3RV7bH8QX/+sddL7wMur+YhS1Pwpi8e0jeLOuHM3/PAd5xUFsXDgHVy904+XOOpSdD6LpB0VIN0W1d9D8F29iTt4GbH3si/jNe5040NOKHbfNwYvfexCzhAj2izqUPXcW+No6bP2TxcCFbrT9dQNmm3l4n0xDh+qw47b5WPfdStyLD9DdcRiHa6twZ3Mz1onmfDaC7h/sQOuHoq5bUXT3dbxz+AB2/G0qUgDFJN67DB4hARIgARIYDwGPQZlbll4DNV2oAhSrImXlRimGdRZp1mLFrZpQFmMgZQlLI+h+qVuKR+ucg3I5RcitolaY4VsscsqfFUcKU4+m263ZlMPxb6pigvvURc1yIjOGgBWrxDxNsOttReVr69ynn85Ty9A/VuXkIAcD0oF5tyE26BYYbiXm3K1OtVLFLtFO1Xm/0u9qRi7WIOrhid6OsEoxzstxC4/Ra2oKg8pCEsZ0tcyxOiuPXqTHUee1rPiOywkiz/Tpp50PqmAsMxS8gpbvKU8RTy6sAMBruqMpTEdWUxNTPM4XLwvGyGxcQt5E8+5MPLy5Cus/HUFqTirwTy7RXIKun38e5XWHcfUe7b06HSPyXbT5z8/iYk0zgksmWgxT7xNahbQPAS6VuxlBxlRL01LSW0Sf2OpN5j1zYmvK3EiABEhguhOYNkLYwOk3cfXLRfirHwihSsOWt2wlMlOeRv0vPsBlrMQc6V8CeLi6Fhvv19Euy8MXRzei5f0+jDyeifRP30HbjweAhyrx/PYHoT2a87ByUTq2/kU3TvSW4l60obU3DU/+XTNKv2bl8/CKl7G14gDa3nsY25YLiUv8XUXauhbUP6a/7Io6/e56VB85jw++9yAWfzaAztBZ4OuKgLYsDw/e24xg7QDwB3o2Hj+jN/JQ1bgVebKiechbNEeuUPZP/2sE6zLTcfUXP0Lrv6SiqKbBfNHI+8M8zP+rcrT+h0emDCYBEiABEphAApGDMrfM3QdqusAijJziWBlPszgQacQA3Wsw7ChdfzZq0/Acx+LajWExpOZhc36uHtC2NQbGdMHI42qIsLLqjpi6aKzyqApMaqrEtqVD+X1laM2IsvqmIQZJ4QtyRcsFNS3IfKkMxXtr0XL3cWBzLYInqjH0sbDgE3UYwdBHwILlWj0tSxFtQDz0VOzFFSJaYtQj4oDqv8150Hks2jkzgvTlQeTUiDQ5yMkZEC7P4jovRXu7956FsOhSLaai+QgzRaJwNxqkrza7dZ5m2bIApbGmADqbPK5961oWgpO5IqhgrzrL9xKyTN9TulDmVZePh7SVZi8nOmlSO69QGN0vnF2A9aqEM/w68v60DsGHLNEq6oILZvIhvL7vMK4+sA3Pf2+lOfsi76FVyNuzEfWhN1HUuA7ap2gz0U3csEQpZyWkrztnoL7vPBb9fp2HVYWtmu9IIZ4PDGBA/cjhUYYM7m1F63AmPtxn+eATH0jUP5uPMEWknop7ploPbpMACZBAMhOYNkJYzvoWtK13op6F+QvnAb/4DUY/BfClOUifBZx4oRWL5zyJ5ffMwazbUrFyx0GY/lovnMfp67Pw8LcMEUzP854n0dz+pNw523QC11MfxBevnsXZ9+xl3onrONH7AbYtN/wuzMcfOpxrpt8tHEt8qE2R+LQPp/8LWF72sGJFBqTeX4zir76JNnv2kXvLHtRFMP1QWqa08uqWL09fxPlTfcBXS1Gkfm27LR1FT65Ea+2bkfkxhARIgARIYOIIRLHccBZiiSH6EV3YEAOqzhjWXfa8NGFq+d5iVFdm6j6ojBhDOFxZDDzldLbsMr3QSALhq8opBBmCjTNcSRRjU1qufKStvJiwbCWtrJxWUwB6T6NbDCjj5uW08NEqbQg06UuC2Lb5Q5TVtGJ5p8u0P9lHH8rFAYqkINOnt1o4rm8BKhtw9ol61KcBfZeB1tN9CC5ZDBiO353WTL2HtdWinZZ5MVjKw6bIYkWOsOCyDiHaMSWaspmO9CWa7y+Z9ki8Iphg3KCvnFqEIrkKqnb+HFdyt1k7KuHSN5hYFMLGRJ9uu3nbmBcCUIqIc1NcV8a7nSOJYK/Wb8xClpav5ucLgPABuGVx/G00RO2nFkvrywZsc7dmdFQ/vt0cLBJWYIn+/ftZHP8VkLkE+OB9IYZaf6P/xxzgV/+EvvC62D7NrGSTvBW56IRhfbjKtOBSqhBh3aUc89pMS0fRlk4UPdEtP17HLYKJRUkMP2GP6uKXvAfZC3IV4Sbsnmkvi3skQAIkMFMJTBshzOiA66MjGLo4hKFffYC+3nfwzv8akoeu/pf4CvsgSv/kQQz8fTca/qwbmJWK9JwHse6xYqy6P1N+pbo6/CGuYx68Te1HMCKyHH0Hz+96xyjW/vtvQ7hqvrakICXaFMf/vIoRpOPhuw0LMiOrOUj/qrEd5TdFTHD0+vsNrl4F8PvzI7+0Zc5HjlcyhpMACZAACYyLgLRsUlbHG0tmQnyyrVzmzCTGtEVr6qPdwX5mayekaCOcLZtCjsMCyXVwJ8QLfaUyYWXc2olgmj1vZxXNfcUqQQvTLVds0wvN2DE2LMfyRR9bU820ldS6pf8jD7nCJV/LwseoV3dlGVSBJv3RbQieKHNf3U/pA63PoYhiYkBtuDAHFi8vAl7SfalJocRpzdSH1hqYq0a6VHZMQWOz/tGLGu5GZY1qeWKvgs3yxDykMc17rxJl8hpwMjYjxt7obUW1XEkzHd2VxRD+8cQ0W7H6ZOtADoJTuYKkq18u+9TIFn3qprY4RA5yEhWydCLCf1zO5lqsOtFm8ysXC5hmJVeEUinKLQBqylB8WXGwbliqxcpoIo+PjOCiyO/VBtS96pbxVQwJ07IJtexzF7jFgh1j/4tjAYIomUf4j7PFVadFKwcUK1M5odaYbq1EiW9zIu+Z8ZXIWCRAAiSQ7ASmjxD27ydQ/9fNeCcsvOTPwpyvzsHdX1uJhx84gcNvW92Q/o1KtDx0FRfffwfHe97EifNvonXXmzigT03EZ1bcqFsRL/WRseMzGY9Mp4WkIGUMH97sud3AdWEJxz8SIAESIIEpJRBh3eUoPZEpgBiLXx9zwKRb3qxsQYtYXOXEKuSZA07dN1hhrSaMKXWUA+qcVdYKfaZgVouiYDVQ4xDOojwTtbYqmcvNEQyJaXUrXWzBBiIdomup9Wl7htWUtPoKSrFQllFTLWzXULslfhnMWSv3/XQUPVWE1po2dD+x2M7KRRxpDRYr6zwqUw3vykTOwHGcDRch83SkYCenLQHoLnb4kJKV8hgoy2P2aVFWG3Sx8W4rJOGtDH31x4iE7j6wNEuxBcj8uBVll0vR2TqEyqAqK0ZkFCVAnJ/C2q5eflpcXN+JIv1aqNanZGpWeFGymMhDDutO0VZzaqSjHClkrQxiwcDxhIQsmY1uubOqdTHy0IayQ30oiuuc1vw/obBU+xQrHPG3ZqIyqFgR6fVckOFy3TnaMNG7kValE12Cml+k+Op+H1LTRNk2LPyiRIl1yPIfZ4/p+izQ7yu4+zZ0V/4E4uNF7aFiiDvcmP6m/J45ployEQmQAAncUgZLS8IAACAASURBVASmiRB2FW+2NOCdT1di2z9sxcqvWtZVQwdP4LAT6W1iNcki+W/jZ9cx9GoVtv64Dd3/WoSN9yzALLyp+PEwEveh1V+PD0r+Gk+KQcTbH+Dip0VI1/2RGbES/r1zDoTT0MuXrwP3WPUGwhj6V8T0ERa9PN2q7J8vYgh5dquwj4cgVvpeED0DHiUBEiABEhgvAX3qim0FtTHkGe9AUpvyZhRgTfMZec0I03/F4MhVjNIG1DmbxSqP+p9p+dSniDzGwTH8yimMQJHbgDyKqCZLck5DA5CeIZ5mA5i0VQuXBFFbWIy290ZQ9Cikfy8p4qUtRn1nHoQVWes8xfJGeAF7rRJlJxSH+ml5WJXTitY9lcgZENNNVcHOWBUxcgAPuSiCIqipuF2mRVmHNbFxwVNmL1qHYm3JgX8OVjmnbkZLpy8KkLN5HRYvSdemCoY1q/xoybyP2S3qtHjpyJTm7JO3qp53fWIdGcFIOB3paaIvc7CqtQiZl1v1cyZGH4S70fpeHoJiQYn3jmNAF6HTl61Czr74pkdqQqpDCBbinVxRVs9DF3Qm9t1vBNfErIsvWXxGPlbeMOV7LnB2cAhYchM8gYlr5CUxRbxervZp1TL+Lc3Cb5V1P4w76dgsX+V0YDnFOxeLH9WsSo1J13EXrUa8GfdMtXxukwAJkEASEpgmQthlXBQvit9aZRPB8NlFHD8p7LJmS/TX338e5c+dwPK/fB4bv673xm2zMOe/3QlAf1lbuAjLZ3XjzZ+/g9Illp+w0fdP4PinN7BqXjbyvroSs94+gc6eUjxoOMEX2f37YVT+X20Y/e5uND8+P77uvicPK7/chpdffR2ly9eZfsJGe7vR/e/jFcJSsahgMdDUje7eItNZPjCKd37+JoTtHP9IgARIgAQmk4BldaXKHrJET8snFzFkMqooxa2g9BVVXKxNORNTu0YMJ/Rx+9kSGpSXFZdecceUpD5hESWsn17qxrol6uqIY2ioFIM0C6ug6qdpDFlFSyKmmmp96LD3dhUUXcREGJZl3RjICWKbra4JLDgQrZLqMcNfmq0cNYL3tuajKrGpYMa0PC//bFIYdEwXNnyxaTVxWr05xT/NulFOibStqOndjok84lZ/QJkaqTs7x2tt6M5ZhZY0IH15EaprDqPvURf/cnrlzHwLaxEMn7UvDJBWhFIhwL62DoujXY9yCqnw2bbOdMxhtl1aspl74kKP4v5DjRd7+4upXwTwAT4cBlYaQtjoWZx4W3nDvOdBFN3Thue7OnH2UWNxJ5H3KM42BVH/3oP4s3/YigfHPQvCo75L1iH4UhnK9maiMy7LOmc+uj+6lcqHAWcUz/0olq+eaYwFP1z6UqaxFlCxsrBbhTqnLEf4DJuie6ZVP26RAAmQQPIRmCZC2N249/5Z6P55PbalBlG6aA5Gw+/gtY4T+Oi6ZWU16/fzkJdyGIf/Zhuu/vcirPo/5+Dqv72J7oPvYNbXgyiSXxkfROl3c3B6Xz22XnsSpY/di1lDb6LtpXdw4+tBiKXlZ31Wig1fP43WUDnKBkpR+o1MXP+34+j+xxO4+OUi1PriFMHk+TAfxeVFeLPmeZRXXsaGdQ/ii/9bK0+49xrv35xvBLGxaxue/+E2jBQ/iaKFQF9HK17/1XhzZnoSIAESIIGYBHSRBAMuVh2xLJ9iZj4xEaQvMeHAXAyONEUMwUSFhiht0Syj1LpqAz3Np1f1OAaoin8ycyqoWg4A05LNET6BuyN3rUNtYTeq95Wh+ITm/F+KIdGc9g8IX2FwsTCxD3LlADZjLJWNIsDGkZ2Y2mdOsYsjvogSazqw/Xj8zvK14g0uXiKxZfkYvbp6Pl7nS5TE9vqrEUWebchsFWJXH1rVFS6FCJNT5ilkddcUQ0jCmrWn5oNvwLEwwOIngmgLNqB7mWM6slEFMY2uRhOC66OJZcJKcfhDI9WE/Kb+wSrkzTqLw39XjVl/vA734gN0dxzGbzJyAGElJv8y8XCgCJ013ajbdBHrNpdi8awR9B07jNffv4F5m5+MEME0cVD42/Nos5F1XL/pKNoexHGXKaJqck+rL3kPH6M/OumTLQerHItmqeVGbmuieGS4EeIQzaWoZRzTfiOEL+WwKry6CoNTcM9UqsNNEiABErhlCUwTIWwOVm7fjd/sbUDbkWbUvToLqWn34uHNDaj+b0cR/MvX8cHF6yhavhjB/1mLOU0H0P2PzTgh/GfdPgeLC6vQ9N0884VUvOy0fLUNzQe60brrZVzX4+z+bh7miK4Sqy7+oAXpHc14/kgbGk5dl/nMXxZEw+YizE/wq1bqkiCa/y4TLY1tOLDnTeBLmVj+3W1YeaIBL4/31LgtE+t+sBspgk1nM85en4XMhzZg97ohbNtj+SEZbzFMTwIkQAIk4CQgnJ93606vq1EtfD/pgpEz5s3eN1YBRGEtalGN6mAxjm9umcAV56wWjkiLmSBalixGemctUFyN4iOawJFnRYuxZVgHxbtyYYzsEjpsn3KYnpaO9C2d6Nyi1amsuFXmVlSj+bYys9YFi5zNQSzY12p3vm9YaEirok4EzURCoFR34tvu21uG1oEi1NZH2CHGkYEhVI4lbRzZJxrFxsbbsiqubHVn8eJ9MPE/rX+H5IqrQvgqxZD0l9eJoPCFJt6p5rWiW1zjphWeYQXoELL0qcHqSpmefZZWhG2bj6Ms2IpM58qlho86UWZMayfdh1hOUPETmDgFW4o5K7Hth7+R76+Hm+pwWLy/luzGtow3UVpjxdTec+fj+R+34XURD9p7+h/trMVGF5FICrETUk9DQAVyCouQc6QalXe3oH6ZXrf3WlG8z3oXFtesbRKrec222H0DWk2LuqVOc40acUoO3sx75pQ0kIWQAAmQwJQSmCZCGIDU+Sja3gy7cbBgsRFtnRstKF9ajCd3NuBJK8R1a879pai6v9T1mAy8bQ7y/rgKeX/sHcXr66FbeOrXirCt0VH7R1fCqoHjCxCc+0Y9XMLd2LzfDGA+0m1PfCMP/pIACZAACYyPgGJ58uhi4FHL0bchlAifVtZ2ZGnOr/qG9UhkTJeQwsgwObicV6oM9KyBkRToOo0pipaoU7zPywLHkX+8UyPD3fapX8azTIgdQTE/U/xF5yKsZ9YNN2hCj1MY0HOwfqyBsBFmH+y6ry5nn7JnpNR/pYiRg6DTf1b4LI6LVQ31P9u0T0OwEJZI4nzIGEJ3TTVal3dCTufUp6kaacWvabmhB0ohVY2gbMtj0spJrK6oi2Ax2SgZKJtSqBSCnCnmKAeNTcPSxcnAOD5hv4aYHFuUdfKS57SzDWPxfWa0RVoGCS6LgcJqVB8COmuKUFzTiuWdQdQ/1YriGnG9GNeRnlD3L1etCFnCGjBHTI/VV5nUhGiR1l3oE++NtZeLUV0sVhXV4xgCoYd1WwQPWR0hjjrqZ7TPuBbNfWvD7b3VOOr6/gqxiIURQ/tN/drD2Fr3MLbag132xuZXy8xI9vEABvRFK8T9otM4D54QiwccRt8y3VfZsiA6H7XJzmY20kJWfsiIfe5ZidQtt+nR6nFtO/K+HBlnIkJGXpuoe+ZE1IZ5kAAJkMCtT2D6CGG3PstJacHAjzei9tRKVP7DRiy+zShiFGdPvQPMWoV55uphxjH+kgAJkAAJjI+AEJiq8eHmFnTapiq5fKhIoKCxOcuH9AFWfUQrSHPQbohDYuDdiU7X54A+1UwKOJXA367C8b9shabzuIgkcU2NHEH3nlZgc4sm/qhtdxGC1MMR20vidXwdi7lT6NPEQWudQ0UsVCohREpzxUJD5BLihtLnUoioBFqeGkKZPnXNnIok2lsDFNcUAzW6GKbkLzajiQ+OqOauEFRaEUSLKWqah+Lc0PwhRVizidSG8GLkJKbwuZ47jrjR4hl5ef5q/ed5WDkQDy/pm25MlkbaVFPRv9KWTFgAyrIX64KPJtiJa9Q8L5S6Ld7SguBH1hTJdLGioy7OiPOk+ojTH5qSWN8UU5hroYthNUB1Tbc+pTIyrgiJh4d7ypscqgvKRU+NxWoP0PwPOq9rvU2GvzSxsEO0ZuqWYPHec12zEoK5uC/angEipvOeIurq1VY1brR4rjWwBcZ/PsS6Z9qy5Q4JkAAJzFgCv/P5559/Hk/rL168iPnzE/GdFU+ujBOTwMDz2Fh5GKNfe1j6H0u//So+eP1lHH7/KuZtbpqUaS9qndjvKg1ukwAJkAAJJBUBXRxyWu+ZbdRFsgUeYpcmLilWPmZCbkw8AV3kXDlWC5+JrxFzdCEgryleEy5kGEQCJEACJDDFBKJpGRTCprgzxlLc6L92o2Xvyzj9r1dxXfhluGcRip4JotTFL8NY8o+WJtrJEy0dj5EACZAACZAACZAACZAACZAACZAACZDAzSAQTcvg1Mib0SMJlin9N/ydw/9YgnkwOgmQAAmQAAmQAAmQAAmQAAmQAAmQAAnMdAK/O9MBsP0kQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIzgwCFsJnRz2wlCZAACZAACZAACZAACZAACZAACZAACcx4AhTCZvwpQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMDMIUAibGf3MVpIACZAACZAACZAACZAACZAACZAACZDAjCdAIWzGnwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIzgwCFsJnRz2wlCZAACZAACZAACZAACZAACZAACZAACcx4AhTCZvwpQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMDMIUAibGf3MVpIACZAACZAACZAACZAACZAACZAACZDAjCdAIWzGnwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIzgwCFsJnRz2wlCZAACZAACZAACZAACZAACZAACZAACcx4AhTCZvwpQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMDMIUAibGf3MVpIACZAACZAACZAACZAACZAACZAACZDAjCdAIWzGnwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIzg8AXEmnmxYsXE4nOuElCgP2eJB3JZpAACZAACZAACZAACZAACZAACZDADCeQkBB21113zXBcM6/5H3/8MdjvM6/f2WISIAESIAESIAESIAESIAESIAESuFUJCC3D649TI73IMJwESIAESIAESIAESIAESIAESIAESIAESCCpCFAIS6ruZGNIgARIgARIgARIgARIgARIgARIgARIgAS8CFAI8yLDcBIgARIgARIgARIgARIgARIgARIgARIggaQiQCEsqbqTjSEBEiABEiABEiABEiABEiABEiABEiABEvAiQCHMiwzDSYAESIAESIAESIAESIAESIAESIAESIAEkooAhbCk6k42hgRIgARIgARIgARIgARIgARI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tp1CmCsWBhoEKIQZJPhLAiRAAiRAAiRAAiRAAiRAAiRAAiRwKxCIJoTNuKmRyWrKfSuciKwjCZAACZAACZAACZAACZAACZAACZAACdxMAjN01cibiZxlkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ3AwCFMJuBnWWSQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkMOUEKIRNOXIWSAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkcDMIUAi7GdRZJgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwJQToBA25chZIAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwM0gQCHsZlBnmSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAlNOgELYlCNngSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAjeDAIWwm0GdZZIACZAACZAACZAACZAACZAACZAACZAACUw5AQphU46cBZIACZAACZAACZAACZAACZAACZAACZAACdwMAhTCbgZ1lkkCJEACJEACJEACJEACJEACJEACJEACJDDlBCiETTlyFkgCJEACJEACJEACJEACJEACJEACJEACJHAzCFAIuxnUWSYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMCUE6AQNuXIWSAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMDNIPCFRAr9+OOPE4nOuElCgP2eJB3JZpAACZAACZAACZAACZAACZAACZDADCeQkBA2f/78GY5r5jX/4sWLYL/PvH5ni0mABEiABEiABEiABEiABEiABEjgViUgtAyvP06N9CLDcBIgARIgARIgARIgARIgARIgARIgARIggaQiQCEsqbqTjSEBEiABEiABEiABEiABEiABEiABEiABEvAiQCHMiwzDSYAESIAESIAESIAESIAESIAESIAESIAEkooAhbCk6k42hgRIgARIgARIgARIgARIgARIgARIgARIwIsAhTAvMgwnARIgARIgARIgARIgARIgARIgARIgARJIKgIUwpKqO9kYEiABEiABEiABEiABEiABEiABEiABEiABLwIUwrzIMJwESIAESIAESIAESIAESIAESIAESIAESCCpCFAIS6ruZGNIgARIgARIgARIgARIgARIgARIgARIgAS8CFAI8yLDcBIgARIgARIgARIgARIgARIgARIgARIggaQiQCEs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UIACFKAABSiw1gIMhK21ONujAAUoQAEKUIACFKAABShAAQpQgAIUqIgAA2EVYWejFKAABShAAQpQgAIUoAAFKEABClCAAmstwEDYWouzPQpQgAIUoAAFKEABClCAAhSgAAUoQIGKCDAQVhF2NkoBClCAAhSgAAUoQAEKUIACFKAABSiw1gIMhK21ONujAAUoQAEKUIACFKAABShAAQpQgAIUqIgAA2EVYWejFKAABShAAQpQgAIUoAAFKEABClCAAmstwEDYWouzPQpQgAIUoAAFKEABClCAAhSgAAUoQIGKCPxeKa3Ozs6WUpxlbxABvu83yBvJ26AABShAAQpQgAIUoAAFKEABCmxwgS9cu3bt2gY34O1TgAIUoAAFKEABClCAAhSgAAUoQAEKbAABTo3cAG8yb5ECFKAABShAAQpQgAIUoAAFKEABClAAYCCMnwIKUIACFKAABShAAQpQgAIUoAAFKECBDSHAQNiGeJt5kxSgAAUoQAEKUIACFKAABShAAQpQgAIMhPEzQAEKUIACFKAABShAAQpQgAIUoAAFKLAhBBgI2xBvM2+SAhSgAAUoQAEKUIACFKAABShAAQpQgIEwfgYoQAEKUIACFKAABShAAQpQgAIUoAAFNoQAA2Eb4m3mTVKAAhSgAAUoQAEKUIACFKAABShAAQowEMbPAAUoQAEKUIACFKAABShAAQpQgAIUoMCGEGAgbEO8zbxJClCAAhSgAAUoQAEKUIACFKAABShAgf8HXKbIQoD4AMAAAAAASUVORK5CYII="
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参数：\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第二十题 字符串统计 统计grammer 列每个字符串的长度\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    6\n",
       "1    1\n",
       "2    4\n",
       "3    2\n",
       "4    1\n",
       "5    3\n",
       "6    3\n",
       "7    6\n",
       "8    4\n",
       "Name: len_srt, dtype: int64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['grammer'] = df['grammer'].fillna('R')\n",
    "df['len_srt'] = df['grammer'].map(lambda x:len(x))\n",
    "df['len_srt']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## map() 函数:\n",
    "\n",
    "### map() 是 python 内置的高阶函数，它接收一个函数 f 和一个 list，并通过把函数 f 依次作用在 list 的每个元素上，得到一个新的 list 并返回。\n",
    "### map(function, sequence):  对 sequence 中的 item 依次执行 function(item)，见执行结果组成一个 list 返回。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 补充：关于处理缺失值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 对于数值型数据，pandas用浮点值Nan(Not a Number)来表示缺失值。我们称之为识别符（sentinel value)，这种值能被轻易检测到："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     aardvark\n",
       "1    artichoke\n",
       "2          NaN\n",
       "3      avocado\n",
       "dtype: object"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])\n",
    "string_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    False\n",
       "1    False\n",
       "2     True\n",
       "3    False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "string_data.isnull()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 在pandas中，我们使用了R语言中的一些传统，把缺失值表示为NA（not available）。在统计应用里，NA数据类别是要么是数据不存在，要么是存在但不能被检测到。做数据清理的时候，对缺失值做分析是很重要的，我们要确定是否是数据收集的问题，或者缺失值是否会带来潜在的偏见。\n",
    "\n",
    "- 内置的Python None值也被当做NA："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "string_data[0] = None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     True\n",
       "1    False\n",
       "2     True\n",
       "3    False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "string_data.isnull()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>State</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Stockholm</th>\n",
       "      <td>909976</td>\n",
       "      <td>Sweden</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>London</th>\n",
       "      <td>8615246</td>\n",
       "      <td>United kingdom</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "      <td>Italy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "      <td>France</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Population           State\n",
       "Stockholm      909976          Sweden\n",
       "London        8615246  United kingdom\n",
       "Rome          2872086           Italy\n",
       "Paris         2273305          France"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#如何处理缺失数据\n",
    "df = pd.DataFrame([[909976, \"Sweden\"],\n",
    "                   [8615246, \"United kingdom\"], \n",
    "                   [2872086, \"Italy\"],\n",
    "                   [2273305, \"France\"]],\n",
    "                  index=[\"Stockholm\", \"London\", \"Rome\", \"Paris\"],\n",
    "                  columns=[\"Population\", \"State\"])\n",
    "display(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>State</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Stockholm</th>\n",
       "      <td>909976</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>London</th>\n",
       "      <td>8615246</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "      <td>Italy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "      <td>France</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Population   State\n",
       "Stockholm      909976     NaN\n",
       "London        8615246     NaN\n",
       "Rome          2872086   Italy\n",
       "Paris         2273305  France"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[0,1] = np.nan\n",
    "df.iloc[1,1] = np.nan\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>State</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "      <td>Italy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "      <td>France</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Population   State\n",
       "Rome      2872086   Italy\n",
       "Paris     2273305  France"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna()  #删除缺失数据的行"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 上面的等价于下面的代码："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>State</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "      <td>Italy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "      <td>France</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Population   State\n",
       "Rome      2872086   Italy\n",
       "Paris     2273305  France"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df.State.notnull()]  #等价于 df.dropna()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 设定how=all只会删除那些全是NA的行："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>State</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Stockholm</th>\n",
       "      <td>909976</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>London</th>\n",
       "      <td>8615246</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "      <td>Italy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "      <td>France</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Population   State\n",
       "Stockholm      909976     NaN\n",
       "London        8615246     NaN\n",
       "Rome          2872086   Italy\n",
       "Paris         2273305  France"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna(how='all')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 删除列也一样，设置axis=1:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Stockholm</th>\n",
       "      <td>909976</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>London</th>\n",
       "      <td>8615246</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Population\n",
       "Stockholm      909976\n",
       "London        8615246\n",
       "Rome          2872086\n",
       "Paris         2273305"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "      <th>State</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Stockholm</th>\n",
       "      <td>909976</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>London</th>\n",
       "      <td>8615246</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rome</th>\n",
       "      <td>2872086</td>\n",
       "      <td>Italy</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Paris</th>\n",
       "      <td>2273305</td>\n",
       "      <td>France</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Population   State\n",
       "Stockholm      909976     NaN\n",
       "London        8615246     NaN\n",
       "Rome          2872086   Italy\n",
       "Paris         2273305  France"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna(axis=1, how='all')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- df.dropna(thresh=n),这一行除去NA值，剩余数值的数量大于等于n，便保留这一行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.742743</td>\n",
       "      <td>-0.868062</td>\n",
       "      <td>0.530330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.410465</td>\n",
       "      <td>0.063120</td>\n",
       "      <td>-0.757319</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>1.893744</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "1  1.742743 -0.868062  0.530330\n",
       "2  1.410465  0.063120 -0.757319\n",
       "3  0.377487  1.893744 -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.DataFrame(np.random.randn(7, 3))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.742743</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.410465</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "1  1.742743       NaN       NaN\n",
       "2  1.410465       NaN       NaN\n",
       "3  0.377487       NaN -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[1:4, 1] = np.nan\n",
    "df.iloc[1:3, 2] = np.nan\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "3  0.377487       NaN -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dropna(thresh=2) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 填补缺失值\n",
    "- 不是删除缺失值，而是用一些数字填补。对于大部分目的，fillna是可以用的。调用fillna的时候设置好一个常用用来替换缺失值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.742743</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.410465</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "1  1.742743  0.000000  0.000000\n",
       "2  1.410465  0.000000  0.000000\n",
       "3  0.377487  0.000000 -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.fillna(0)   # 缺失值填补为0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 给fillna传入一个dict，可以给不同的列替换不同的值："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.742743</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.410465</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "1  1.742743  0.500000  0.000000\n",
       "2  1.410465  0.500000  0.000000\n",
       "3  0.377487  0.500000 -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.fillna({1: 0.5, 2: 0})  #第一列缺失值填补为0.5  第二列缺失值填补为0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用每列缺失值前面的值进行填充(按相应列填充,按照相应index前后填充)\n",
    "df.fillna(method='ffill',inplace=True)\n",
    "\n",
    "df.fillna(method='pad',inplace=True)\n",
    "### 使用每列缺失值后面的值进行填充(按相应列填充,按照相应index前后填充)\n",
    "df.fillna(method='backfill',inplace=True)\n",
    "\n",
    "df.fillna(method='bfill',inplace=True)\n",
    "### 使用每列缺失值前面的值进行填充(按相邻列填充,按照相应columns前后填充)\n",
    "df.fillna(method='ffill',inplace=True,axis=1)\n",
    "\n",
    "df.fillna(method='pad',inplace=True,axis='columns')\n",
    "### 使用每列缺失值后面的值进行填充(按相邻列填充,按照相应columns前后填充)\n",
    "df.fillna(method='backfill',inplace=True,axis=1)\n",
    "\n",
    "df.fillna(method='bfill',inplace=True,axis='columns')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.742743</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.410465</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "1  1.742743 -0.139475  0.736254\n",
       "2  1.410465 -0.139475  0.736254\n",
       "3  0.377487 -0.139475 -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.fillna(method='ffill',inplace=True)\n",
    "df\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.146477</td>\n",
       "      <td>-0.139475</td>\n",
       "      <td>0.736254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.742743</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.410465</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.377487</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>-2.034353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.180710</td>\n",
       "      <td>-0.856739</td>\n",
       "      <td>0.417199</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.085757</td>\n",
       "      <td>0.617893</td>\n",
       "      <td>1.459213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2.081062</td>\n",
       "      <td>0.266273</td>\n",
       "      <td>0.799122</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2\n",
       "0  0.146477 -0.139475  0.736254\n",
       "1  1.742743 -0.856739 -2.034353\n",
       "2  1.410465 -0.856739 -2.034353\n",
       "3  0.377487 -0.856739 -2.034353\n",
       "4  1.180710 -0.856739  0.417199\n",
       "5  0.085757  0.617893  1.459213\n",
       "6  2.081062  0.266273  0.799122"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.fillna(method='backfill',inplace=True)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 中位数填补 对每列的数值采用中位数进行填补\n",
    "df.fillna(df.median(),inplace=True)\n",
    "### 众数填补 对每列数值采用众数填补\n",
    "df.fillna(df.mode(),inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 使用fillna可以我们做一些颇有创造力的事情。比如，可以传入一个series的平均值或中位数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1.000000\n",
       "1    3.833333\n",
       "2    3.500000\n",
       "3    3.833333\n",
       "4    7.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.Series([1., np.nan, 3.5, np.nan, 7])\n",
    "data.fillna(data.mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
